#!/usr/bin/env python3

import sys
import os

def paths(d, f):
    return os.path.realpath(d + os.path.sep + f)


def do_cp(src, dst):
    if os.path.isdir(dst):
        dst = paths(dst, os.path.basename(src))

    if os.path.exists(dst):
        ch = input("%s 是否覆盖(Y/N): " % (dst))
        if not (ch == 'Y' or ch == 'y'):
            return

    f1 = open(src, 'rb')
    f2 = open(dst, 'wb')

    f2.write(f1.read())

    f1.close()
    f2.close()

def do_cp_dir(src, dst):
    """
    目标:
        已存在的目录   将源目录复制到已存在的目录
        已存在的文件   报错
        不存在的路径   创建目录/重命名
    """

    def _do_cp_dir(src, dst):
        os.makedirs(dst)
        for f in os.listdir(src):
            p = paths(src, f)
            if os.path.isdir(p):
                _do_cp_dir(p, paths(dst, f))
            else:
                do_cp(p, paths(dst, f))

    if os.path.exists(dst):
        if not os.path.isdir(dst):
            print("目标是文件, 不能复制目录!")
            return
        dst = paths(dst, os.path.basename(src))

    _do_cp_dir(src, dst)


def main(argv):
    if len(argv) < 3 or not os.path.exists(argv[1]):
        print("请正确指定源路径和目标路径!")
        return

    do = do_cp_dir if os.path.isdir(argv[1]) else do_cp
    do(os.path.realpath(argv[1]), argv[2])

if __name__ == "__main__":
    main(sys.argv)
